import Vue from "vue";
import { getAction } from "@/api/manage";
import { queryDelivererList } from "@/api/api";
import { FormTypes } from "@/utils/JEditableTableUtil";
import { findBillDetailByNumber, findBySelectSup, findBySelectCus, findBySelectRetail, getUserList, getAccount, getCurrentSystemConfig, getPlatformConfigByKey, saleDepotHeadCount, queryUserListByRoleId } from "@/api/api";
import { getCheckFlag } from "@/utils/util";

export const BillListMixin = {
    data() {
        return {
            /* 原始审核是否开启 */
            checkFlag: true,
            /* 单据Excel是否开启 */
            isShowExcel: false,
            billExcelUrl: "",
            supList: [],
            cusList: [],
            retailList: [],
            userList: [],
            accountList: [],
            // 实际索引
            settingDataIndex: [],
            // 实际列
            columns: [],
            saleCount: [],
            deliveryManList: [],
        };
    },
    computed: {
        importExcelUrl: function () {
            return `${window._CONFIG["domianURL"]}/${this.url.importExcelUrl}`;
        },

        isBatchDelEnabled: function () {
            for (let i = 0; i < this.selectedRowKeys.length; i++) {
                if (!this.selectionRows[i].actionsEnabled.delete) {
                    return false;
                }
            }
            return true;
        },
    },
    created() {
        this.initColumnsSetting();
        this.isShowExcel = Vue.ls.get("isShowExcel");
    },
    methods: {
        initPurchase() {
            let that = this;
            queryUserListByRoleId({ roleId: 23 }).then((res) => {
                if (res) {
                    that.purchaseList = res.data.users;
                }
            });
        },
        getSaleCount() {
            saleDepotHeadCount(this.queryParam).then((res) => {
                this.saleCount = res.data;
            });
        },
        myHandleAdd() {
            this.$refs.modalForm.action = "add";
            if (this.btnEnableList.indexOf(2) === -1) {
                this.$refs.modalForm.isCanCheck = false;
            }
            this.handleAdd();
        },
        myHandleCopyAdd(record) {
            this.$refs.modalForm.action = "copyAdd";
            if (this.btnEnableList.indexOf(2) === -1) {
                this.$refs.modalForm.isCanCheck = false;
            }
            //复制单据的时候需要移除关联单据的相关信息
            record.linkNumber = "";
            record.billType = "";
            record.deposit = "";
            this.$refs.modalForm.edit(record);
            this.$refs.modalForm.title = "复制新增";
            this.$refs.modalForm.disableSubmit = false;
            //开启明细的编辑模式
            this.$refs.modalForm.rowCanEdit = true;
            this.$refs.modalForm.materialTable.columns[1].type = FormTypes.popupJsh;
        },
        myHandleEdit(record) {
            if (record.status === "0" || record.status === "10") {
                this.$refs.modalForm.action = "edit";
                if (this.btnEnableList.indexOf(2) === -1) {
                    this.$refs.modalForm.isCanCheck = false;
                }
                //查询单条单据信息
                findBillDetailByNumber({ number: record.number }).then((res) => {
                    if (res && res.code === 200) {
                        let item = res.data;
                        this.handleEdit(item);
                    }
                });
            } else {
                this.$message.warning("抱歉，只有未审核的单据才能编辑！");
            }
        },

        myHandleLogistics(record) {
            this.$refs.logisticsForm.add(record);
            this.$refs.logisticsForm.title = "发货";
            this.$refs.logisticsForm.disableSubmit = false;
        },
        myHandleDelete(record) {
            if (record.status === "0") {
                this.handleDelete(record.id);
            } else {
                this.$message.warning("抱歉，只有未审核的单据才能删除！");
            }
        },
        myHandleDetail(record, type, prefixNo) {
            if (this.btnEnableList.indexOf(7) === -1) {
                this.$refs.modalDetail.isCanBackCheck = false;
            }
            this.handleDetail(record, type, prefixNo);
        },
        handleApprove(record) {
            this.$refs.modalForm.action = "approve";
            this.$refs.modalForm.edit(record);
            this.$refs.modalForm.title = "审核";
        },
        searchReset() {
            this.queryParam = {
                type: this.queryParam.type,
                subType: this.queryParam.subType,
                roleType: Vue.ls.get("roleType"),
            };
            this.loadData(1);
        },
        onDateChange: function (value, dateString) {
            this.queryParam.beginTime = dateString[0];
            this.queryParam.endTime = dateString[1];
        },
        onDateOk(value) {
            console.log(value);
        },
        initSystemConfig() {
            getCurrentSystemConfig().then((res) => {
                if (res.code === 200 && res.data) {
                    let multiBillType = res.data.multiBillType;
                    let multiLevelApprovalFlag = res.data.multiLevelApprovalFlag;
                    this.checkFlag = getCheckFlag(multiBillType, multiLevelApprovalFlag, this.prefixNo);
                }
            });
            getPlatformConfigByKey({ platformKey: "bill_excel_url" }).then((res) => {
                if (res && res.code === 200) {
                    if (res.data.platformValue) {
                        this.billExcelUrl = res.data.platformValue;
                    }
                }
            });
        },
        initSupplier() {
            let that = this;
            findBySelectSup({}).then((res) => {
                if (res) {
                    that.supList = res;
                }
            });
        },
        initCustomer() {
            let that = this;
            findBySelectCus({}).then((res) => {
                if (res) {
                    that.cusList = res;
                }
            });
        },
        initRetail() {
            let that = this;
            findBySelectRetail({}).then((res) => {
                if (res) {
                    that.retailList = res;
                }
            });
        },
        getDepotData() {
            getAction("/depot/findDepotByCurrentUser").then((res) => {
                if (res.code === 200) {
                    this.depotList = res.data;
                } else {
                    this.$message.info(res.data);
                }
            });
        },
        initUser() {
            getUserList({}).then((res) => {
                if (res) {
                    this.userList = res;
                }
            });
        },
        initAccount() {
            getAccount({}).then((res) => {
                if (res && res.code === 200) {
                    let list = res.data.accountList;
                    this.accountList = list;
                }
            });
        },
        //加载初始化列
        initColumnsSetting() {
            if (this.changeTableIndexAndColumn && typeof this.changeTableIndexAndColumn === 'function') {
                this.changeTableIndexAndColumn();
            }
            let columnsStr = Vue.ls.get(this.prefixNo);
            if (columnsStr && columnsStr.indexOf(",") > -1) {
                this.settingDataIndex = columnsStr.split(",");
            } else {
                this.settingDataIndex = this.defDataIndex;
            }
            this.columns = this.defColumns.filter((item) => {
                return this.settingDataIndex.includes(item.dataIndex);
            });
        },
        //列设置更改事件
        onColChange(checkedValues) {
            this.columns = this.defColumns.filter((item) => {
                return checkedValues.includes(item.dataIndex);
            });
            let columnsStr = checkedValues.join();
            Vue.ls.set(this.prefixNo, columnsStr);
        },
        //恢复默认
        handleRestDefault() {
            Vue.ls.remove(this.prefixNo);
            this.initColumnsSetting();
        },
        //导出单据
        handleExport() {
            let search = this.getQueryParams().search;
            this.$refs.billExcelIframe.show(this.model, this.billExcelUrl + "?search=" + search + "&type=1", 150);
            this.$refs.billExcelIframe.title = "确认导出";
        },
        //导出单据单据
        handleExportNew() {
            let search = this.getQueryParams().search;
            this.$refs.billExcelIframe.show(this.model, this.billExcelUrl + "?search=" + search + "&type=1", 150);
            this.$refs.billExcelIframe.title = "确认导出";
        },
        // 设置费用
        setOtherMoney(record) {
            console.log(record);
        },

        handleDistribution() {
            if (this.selectedRowKeys.length <= 0) {
                this.$message.warning("请选择一条记录！");
                return;
            }
            let refForm = this.$refs.distributionForm;
            refForm.title = "分配";
            refForm.add({ depotHeadIds: this.selectedRowKeys });
        },

        initDistUserData() {
            let that = this;
            queryDelivererList().then((res) => {
                if (res.code === 200) {
                    that.deliveryManList = res.data.users;
                }
            });
        },
    },
};
